SPB Git
856 B · 13 lines tsx
1import { notFound } from "next/navigation";2import { requireUserPage, getWorkspace } from "@/lib/auth/guard";3import { getPage, breadcrumb, backlinks, touchOpened } from "@/lib/pages/service";4import { PageView } from "@/components/page/PageView";5export default async function Page({ params }: { params: Promise<{ id: string }> }) {6  const { id } = await params; if (!/^[0-9a-f-]{36}$/.test(id)) notFound();7  const user = await requireUserPage(); const ws = await getWorkspace(user.id);8  let page; try { page = await getPage(ws.id, id, { includeDeleted: true }); } catch { notFound(); }9  const [crumbs, back] = await Promise.all([breadcrumb(ws.id, id), backlinks(ws.id, id)]);10  touchOpened(id).catch(() => {});11  return <PageView key={id} page={JSON.parse(JSON.stringify(page))} breadcrumb={crumbs} backlinks={JSON.parse(JSON.stringify(back))} />;12}13
Files · 2c37cb5a3e2af18e5ba361996d453cab97da82c2
Menu

Theme